using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using MiniTheme.Services.Interfaces;

namespace MiniTheme.ViewModels;

// 语言视图模型类，负责管理语言切换相关的状态和行为
public partial class LanguageViewModel : ObservableObject
{
    // 语言服务接口，用于管理语言相关操作
    private readonly ILanguageService _languageService;
    // 当前选中的语言代码
    [ObservableProperty]
    private string _selectedLanguage = "zh-CN";
    // 构造函数，初始化语言视图模型
    public LanguageViewModel(ILanguageService languageService)
    {
        // 注入语言服务
        _languageService = languageService;
        // 获取当前语言
        _selectedLanguage = _languageService.GetCurrentLanguage();
    }
    // 通用语言设置命令，根据语言代码设置语言
    [RelayCommand]
    private void SetLanguage(string languageCode)
    {
        // 更新选中的语言
        SelectedLanguage = languageCode;
        // 应用指定语言
        _languageService.ApplyLanguage(languageCode);
    }
}